// 定义一系列的算法，把它们一个个封装起来，并且使它们可以互相替换

// 如果在一个系统里面有许多类，它们之间的区别仅在于它们的'行为'，那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。
// 一个系统需要动态地在几种算法中选择一种。
 
// 定义各种策略

//  应用场景, 表单验证

let  strategies = {
    S : function(salary){
        return salary * 4
    },
    A :function(salary){
        return salary * 3
    },
    B:function(salary){
        return salary * 2
    }
}

let calculateBouns = function(level, salary){
    return strategies[level](salary);
}

// 策略中的S , A , B 也可以做成['条件1', '条件2'] 这种形式, 来应对更复杂的条件
